\section{基本语法}

\subsection{PHP 标记}
当解析一个文件时，PHP 会寻找起始和结束标记，也就是 <?php 和 ?>，这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去，而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。

\begin{myremark}{纯 PHP 代码可忽略结束标记}
如果文件内容是纯 PHP 代码，最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符，会导致 PHP 开始输出这些空白。\cite{PHPGroup，2016}
\end{myremark}

\begin{lstlisting}
<?php
echo "Hello world";

// ... more code

echo "Last statement";

// 脚本至此结束，并无 PHP 结束标记
\end{lstlisting}

\subsection{从 HTML 中分离}
凡是在一对开始和结束标记之外的内容都会被 PHP 解析器忽略，这使得 PHP 文件可以具备混合内容。 可以将 PHP 嵌入到 HTML 文档中去，如下例所示：

\begin{lstlisting}
<p>这段内容不会被PHP解析，将直接显示在浏览器中。</p>
<?php echo '这段内容由PHP解析处理。'; ?>
<p>这段内容同样不会被PHP解析，将直接显示在浏览器中。</p>
\end{lstlisting}

当 PHP 解释器碰到 ?> 结束标记时就简单地将其后内容原样输出，直到碰到下一个开始标记。还可以使用分支语句，实现复杂一点的PHP和HTML分离：

\begin{lstlisting}
<?php if ($expression == true): ?>
  This will show if the expression is true.
<?php else: ?>
  Otherwise this will show.
<?php endif; ?>
\end{lstlisting}

上例中 PHP 将跳过条件语句未达成的段落，即使该段落位于 PHP 开始和结束标记之外。由于 PHP 解释器会在条件未达成时直接跳过该段条件语句块，因此 PHP 会根据条件来忽略之。

\subsection{指令分隔符}
一段 PHP 代码中的结束标记隐含表示了一个分号；在一个 PHP 代码段中的最后一行可以不用分号结束。如果后面还有新行，则代码段的结束标记包含了行结束。

\begin{lstlisting}
<?php
    echo "This is a test";
    echo '最后一行可以不用分号'
?>
\end{lstlisting}

\subsection{注释}
PHP 支持 C，C++ 和 Unix Shell 风格（Perl 风格）的注释。例如:

\begin{lstlisting}
<?php
    echo "This is a test"; // 这是一个 c++ 风格的注释
    /* 这是多行注释
       多行注释 */
    echo "This is yet another test";
    echo 'One Final Test'; # 这是Shell风格的单行注释
?>
\end{lstlisting}
从上面可以看出，PHP支持单行（使用//和\#）、多行注释(使用$/*...*/$)，而且单行注释的实现方式不止一种。

对脚本进行注释，是一个非常良好的习惯，注释可谓多多益善。另外，在修改脚本时，保持注释也应该是最新的和准确的。
